home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / e / emodls01.lha / emodules / oop / ooptest.e < prev   
Text File  |  1980-07-16  |  3KB  |  124 lines

  1. OPT OSVERSION=37
  2. OPT PREPROCESS
  3.  
  4. /*
  5. *-- AutoRev header do NOT edit!
  6. *
  7. *   Project         :   Test program for oop.library
  8. *   File            :   ooptest.e
  9. *   Copyright       :   © 1995 Piotr Gapinski
  10. *   Author          :   Piotr Gapinski
  11. *   Creation Date   :   28.12.95
  12. *   Current version :   1.0
  13. *   Translator      :   AmigaE v3.1+
  14. *
  15. *   REVISION HISTORY
  16. *
  17. *   Date          Version         Comment
  18. *   ---------     -------         ------------------------------------------
  19. *   28.12.95      1.0             first release
  20. *
  21. *-- REV_END --*
  22. */
  23.  
  24. MODULE 'utility/tagitem','utility/hooks',
  25.        'libraries/oop','oop',
  26.        'other/ecode','tools/exceptions'
  27.  
  28. #define PROGRAMVERSION '$VER: OOPtest 1.0 (28.12.95)'
  29.  
  30. ENUM ERR_OK,ERR_NOLIB,ERR_NOROOTCLASS,ERR_NOSUBCLASS,ERR_NOMEM
  31. ENUM MC_METHOD1=4,MC_METHOD2
  32.  
  33. PROC main() HANDLE
  34.   DEF rc=0,mc=0,mo=0,res
  35.  
  36.   IF (oopbase:=OpenLibrary(OOPNAME,OOPVERSION))=NIL THEN Raise(ERR_NOLIB)
  37.   IF (rc:=OoP_FindClass(OOP_ROOTCLASS_NAME))=NIL THEN Raise(ERR_NOROOTCLASS)
  38.  
  39. -> create a new class (called 'class')
  40.   mc:=OoP_NewObject(rc,
  41.       [
  42.        OOPRCA_VERSION,1,
  43.        OOPRCA_REVISION,0,
  44.        OOPRCA_INFO,'class - example',
  45.        OOPRCA_AUTHOR,'Piotr Gapinski',
  46.        TAG_END
  47.       ])
  48.   IF mc<>NIL
  49.     addmethod(mc,MC_METHOD1,{methodfunc})
  50.     addmethod(mc,MC_METHOD2,{methodfunc})
  51.     OoP_AddSuperClass(mc,rc)
  52.     res:=OoP_AddClass(mc,'class')
  53.   ENDIF
  54.  
  55. -> invoke class ('class') methods
  56.   IF (mc:=OoP_FindClass('class'))=NIL THEN Raise(ERR_NOSUBCLASS)
  57.   mo:=OoP_NewObject(mc,NIL)
  58.   IF mo<>NIL
  59.     OoP_DoMethod(mo,MC_METHOD1,[1,2,3,4,5,6,7,8,9,TAG_DONE])
  60.     OoP_DoMethod(mo,MC_METHOD2,
  61.       [
  62.        'Piotr',
  63.        'Gapinski',
  64.        'kolo8@sparc10.ely.pg.gda.pl',
  65.        TAG_DONE
  66.       ])
  67.     OoP_DeleteObject(mo)
  68.   ENDIF
  69. EXCEPT DO
  70.   IF mc
  71.     OoP_RemClass(mc)         -> remove class from public list
  72.     OoP_DeleteObject(mc)     -> delete class & all methods
  73.   ENDIF
  74.   IF oopbase THEN CloseLibrary(oopbase)
  75.   IF exception
  76.     SELECT exception
  77.     CASE ERR_NOLIB
  78.       WriteF('Couldn\at open \s\n',OOPNAME)
  79.     CASE ERR_NOROOTCLASS
  80.       WriteF('Couldn\at find RootClass !\n')
  81.     CASE ERR_NOSUBCLASS
  82.       WriteF('Couldn\at find my class !\n')
  83.     CASE ERR_NOMEM
  84.       WriteF('No free memory!\n')
  85.     DEFAULT
  86.       report_exception()
  87.       WriteF('LEVEL: main()\n')
  88.     ENDSELECT
  89.   ENDIF
  90. ENDPROC
  91.  
  92. PROC addmethod(obj,id,func)
  93.   DEF mh:PTR TO hook,res
  94.  
  95.   NEW mh
  96.   IF mh=NIL THEN Raise(ERR_NOMEM)
  97.   mh.entry:=eCode(func)
  98.   mh.subentry:=NIL
  99.   mh.data:=NIL
  100.   res:=OoP_AddMethod(obj,id,mh);
  101. ENDPROC res
  102.  
  103. PROC methodfunc()
  104.   DEF msg:PTR TO LONG,id
  105.  
  106.   MOVE.L A1,msg
  107.   MOVE.L D1,id
  108.   WriteF('METHOD ID=\d\n',id)
  109.   SELECT id
  110.   CASE MC_METHOD1
  111.     WHILE ^msg<>TAG_DONE DO WriteF('  MSG: \h\n',^msg++)
  112.   CASE MC_METHOD2
  113.     WHILE ^msg<>TAG_DONE DO WriteF('  MSG: \s\n',^msg++)
  114.   DEFAULT
  115.     WriteF('Unknown\n')
  116.   ENDSELECT
  117. ENDPROC
  118.  
  119. CHAR PROGRAMVERSION,0
  120. /*EE folds
  121. -1
  122. 92 8 95 13 
  123. EE folds*/
  124.